package org.example.tliaswebmanagerment.utils;

// 当前线程保存当前登录用户的id
public class CurrentHolder {

    private static final ThreadLocal<Integer> CURRENT_LOCAL = new ThreadLocal<>();
    //ThreadLocal<Integer>， 一个线程级别的局部变量存储箱。它为每个使用它的线程都提供了一个独立的、私有的变量副本。
    //指定存储的变量是Integer类型，存储的变量名为employeeId
    public static void setCurrentId(Integer employeeId) {
        CURRENT_LOCAL.set(employeeId);
    }

    public static Integer getCurrentId() {
        return CURRENT_LOCAL.get();
    }

    public static void remove() {
        CURRENT_LOCAL.remove();
    }
}


//当 Thread-1 执行 CurrentHolder.getCurrentId() 时，它会从自己线程 (Thread-1) 的 ThreadLocalMap 中取出值，得到 empId_A。
//当 Thread-2 执行 CurrentHolder.getCurrentId() 时，它会从自己线程 (Thread-2) 的 ThreadLocalMap 中取出值，得到 empId_B。
//完全隔离，互不影响